package com.yex.service.otc;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.yex.utils.JsonResultVo;
import com.yex.entity.otc.OtcOrder;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * otc 订单表 服务类
 * </p>
 *
 * @author Little Liu
 * @since 2018-05-03
 */
public interface IOtcOrderService extends IService<OtcOrder> {


    /**
     * 修改订单状态，判断订单信息是否与当前用户匹配，并且是否有权限修改相应状态，避免跨用户操作,跨角色操作
     * 参数：订单id，修改状态，用户实体
     * 返回：0失败，1成功，2非法操作
     */
    JsonResultVo nowUserOrderUpdate(Integer id, Integer status, Integer userId);

    /**
     * 修改订单状态，判断订单信息是否与当前用户匹配，并且是否有权限修改相应状态，避免跨用户操作,跨角色操作
     * 参数：订单id，修改状态，用户实体
     * 返回：0失败，1成功，2非法操作
     */
    JsonResultVo updateOrder(Integer id, Integer status, Integer userId, Integer payMethod, boolean isService);


    /**
     * 确定下单
     * 参数：委托id,数量,金额
     */
     JsonResultVo addOrder(Integer id, BigDecimal num, Integer userId);

    /**
     * 获取订单信息
     */
    List<Map<String, Object>> getOrderInfoByMap(Map<String, Object> map);

	Page<Map<String,Object>> selectOtcOrderMapPage(OtcOrder queryOtcOrder, Page<Map<String, Object>> page);

	Map<String, Object> getOrderContact(Integer id, Integer userId);

	List<OtcOrder> queryTimeoutNoPayList();

    List<OtcOrder> queryAppealTimeoutNoUploadList();

    void updatePayNoStatus();

	List<OtcOrder> queryCofirmTimeoutList();

	List<OtcOrder> getFees(long startDate, long endDate);

    Map<String,Object> selectOtcOrderMapById(Integer id, Integer userId);


    /**
     *  查询正在进行的订单 (自己委托单)
     * @param type
     * @param userId
     * @return
     */
    int queryNowOrder(Integer type, Integer userId);

    /**
     * 自己的订单
     * @param type
     * @param userId
     * @return
     */
    int queryNowOwnOrder(Integer type, Integer userId);
}
